widgetpaintable: Don't emit signals on dispose
authorBenjamin Otte <otte@redhat.com>
Wed, 27 Mar 2019 02:41:03 +0000 (03:41 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 29 Mar 2019 08:56:52 +0000 (09:56 +0100)
gtk/gtkwidgetpaintable.c

index f1da13fed2cfbd1ce42a303764f9058dc4d11985..6b60c7ad28a86c9065f155c7cbd33543f05cc2e2 100644 (file)
@@ -190,12 +190,24 @@ gtk_widget_paintable_get_property (GObject    *object,
     }
 }
 
+static void
+gtk_widget_paintable_unset_widget (GtkWidgetPaintable *self)
+{
+  if (self->widget == NULL)
+    return;
+
+  self->widget->priv->paintables = g_slist_remove (self->widget->priv->paintables,
+                                                   self);
+
+  self->widget = NULL;
+}
+
 static void
 gtk_widget_paintable_dispose (GObject *object)
 {
   GtkWidgetPaintable *self = GTK_WIDGET_PAINTABLE (object);
 
-  gtk_widget_paintable_set_widget (self, NULL);
+  gtk_widget_paintable_unset_widget (self);
 
   G_OBJECT_CLASS (gtk_widget_paintable_parent_class)->dispose (object);
 }
@@ -311,11 +323,7 @@ gtk_widget_paintable_set_widget (GtkWidgetPaintable *self,
   if (self->widget == widget)
     return;
 
-  if (self->widget)
-    {
-      self->widget->priv->paintables = g_slist_remove (self->widget->priv->paintables,
-                                                       self);
-    }
+  gtk_widget_paintable_unset_widget (self);
 
   /* We do not ref the widget to not cause ref cycles when a widget
    * is told to observe itself or one of its parent.